//# sourceURL=http://uMapApp/Module/WorkManageModule/WorkAreaCameraModule
define([
    "mhjs/mhjs",
    "uMap/uMap",
    "uEarth/uEarth",
    "../Module"
    , "../../UI/Panel/FloatPanel"
    , "../../UI/Panel/PanelBlock/PanelBlock"
    , "../../UI/Panel/PanelBlock/TreeBlock"
    , "../../UI/Panel/PanelBlock/TableBlock"
    , "../../UI/Panel/PanelBlock/ChartBlock"
    , "../../UI/Tree/Tree"
    , "../../UI/Layer"
    , "../Camera/Camera"
], function (
    mhjs,
    uMap,
    uEarth,
    Module
    , FloatPanel
    , PanelBlock
    , TreeBlock
    , TableBlock
    , ChartBlock
    , Tree
    , Layer
    , Camera
) {

    function WorkAreaCameraModule(option) {

        var _this = this;

        Module.call(_this, option);

        _this.title = "智能仓储视频探头";
        _this.icon = _this.app.icons.camera;

        _this.cameras = [];

        // _this.layer = new Layer({
        //     "app": _this.app
        // });
        //
        // _this.layer.pointPrimitives = new uMap.PointPrimitiveCollection();
        // _this.layer.primitives.add(_this.layer.pointPrimitives.object);
        //
        // _this.layer.labelPrimitives = new uMap.LabelCollection();
        // _this.layer.primitives.add(_this.layer.labelPrimitives.object);
        //
        // _this.layer.billboardPrimitives = new uMap.BillboardCollection();
        // _this.layer.primitives.add(_this.layer.billboardPrimitives.object);

        // _this.loadCameras(function () {
        //     _this.renderCameras(_this.camerasData);
        // });

    }

    var _class = WorkAreaCameraModule;

    mhjs.Inherit(_class, Module);

    Object.defineProperties(_class.prototype, {
        "open"         : {
            value: function () {
                var _this = this;

                // _this.layer.open();

                _this.loadInit(function () {
                    _this.isOpened = true;
                    $.each(_this.cameras, function (i, camera) {
                        camera.open();
                    });

                    _this.trigger("open");
                    _this.trigger("toggle");
                });
            }
        },
        "close"        : {
            value: function () {
                var _this = this;

                // _this.layer.close();
                // _this.app.videoPlayer.close();

                $.each(_this.cameras, function (i, camera) {
                    camera.close();
                });

                _this.isOpened = false;
                _this.trigger("close");
                _this.trigger("toggle");
            }
        },
        "loadInit"  : {
            value: function (callback) {
                var _this = this;

                if (_this.camerasRequest && !_this.isLoaded) {
                    _this.camerasRequest.send({}, function (json) {
                        if (json.data) {
                            _this.camerasData = json.data.list;
                            _this.isLoaded = true;
                            _this.renderCameras(_this.camerasData);
                            callback && callback();
                        }
                    });
                } else {
                    callback && callback();
                }

            }
        },
        "renderCameras": {
            value: function (camerasData) {
                var _this = this;

                // _this.cameras = {
                //     "cameras": []
                //     // "open"   : function () {
                //     //     $.each(_this.cameras.cameras, function (i, camera) {
                //     //         camera.label.object.show = true;
                //     //         camera.billboard.object.show = true;
                //     //     });
                //     //     _this.cameras.isOpened = true;
                //     // },
                //     // "close"  : function () {
                //     //     $.each(_this.cameras.cameras, function (i, camera) {
                //     //         camera.label.object.show = false;
                //     //         camera.billboard.object.show = false;
                //     //     });
                //     //     _this.cameras.isOpened = false;
                //     // },
                //     // "toggle" : function () {
                //     //     if (_this.cameras.isOpened) {
                //     //         _this.cameras.close();
                //     //     } else {
                //     //         _this.cameras.open();
                //     //     }
                //     // }
                // };

                $.each(camerasData, function (i, cameraData) {

                    var camera = new Camera({
                        "position": cameraData.position,
                        "名称"      : cameraData.title,
                        "视频流地址"   : cameraData.videoURL,
                        "app"     : _this.app,
                        "icon"    : (cameraData.direction === "right" ? _this.app.icons.camera_r : _this.app.icons.camera)
                    });

                    camera.marker.billboard.scale = 0.8;

                    camera.marker.on("click", function () {

                        if (_this.activeCamera && _this.activeCamera !== camera) {
                            _this.activeCamera.active(false);
                        }

                        if (!camera.isActive) {
                            camera.active();
                            _this.activeCamera = camera;
                        }
                    });

                    // var camera = {
                    //     "data": cameraData
                    // };
                    //
                    // camera.position = new uMap.Position(camera.data.position);
                    // camera.title = camera.data.title;
                    //
                    // // camera.label = _this.layer.labelPrimitives.add(new uMap.LabelOption({
                    // //     position                  : camera.position
                    // //     , text                    : camera.title
                    // //     , font                    : "15px Microsoft Yahei"
                    // //     , fillColor               : ["#fff"]
                    // //     , outlineColor            : ["#000"]
                    // //     , outlineWidth            : 5.0
                    // //     , horizontalOrigin        : "CENTER"
                    // //     , verticalOrigin          : "TOP"
                    // //     , pixelOffset             : [0, 5]
                    // //     , level                   : [0, 1e5]
                    // //     , disableDepthTestDistance: Number.POSITIVE_INFINITY
                    // // }));
                    //
                    // camera.billboard = _this.layer.billboardPrimitives.add(new uMap.BillboardOption({
                    //     position                  : camera.position
                    //     ,
                    //     image                     : _this.app.icons.getIconMarker(camera.data.direction === "right" ? _this.app.icons.camera_r : _this.app.icons.camera)
                    //     , verticalOrigin          : "BOTTOM"
                    //     , level                   : [0, 1e5]
                    //     , scale                   : 0.8
                    //     , disableDepthTestDistance: Number.POSITIVE_INFINITY
                    // }));
                    //
                    // // camera.label.on("click", function () {
                    // //     camera.onClick();
                    // // });
                    //
                    // camera.billboard.on("click", function () {
                    //     camera.onClick();
                    // });
                    //
                    // camera.onClick = function () {
                    //     // if (cameraData.viewport) {
                    //     //     _this.app.flyVP(cameraData.viewport);
                    //     // }
                    //
                    //     if (cameraData.videoURL) {
                    //         _this.app.videoPlayer.title = cameraData.title;
                    //         _this.app.videoPlayer.source = cameraData.videoURL;
                    //         _this.app.videoPlayer.open();
                    //     }
                    // };
                    //
                    // camera.open = function () {
                    //     camera.billboard.show = true;
                    // };

                    _this.cameras.push(camera);


                });

            }
        }
    });

    return _class;

});